﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace EventPlanner.Models
{
    public class Cuenta
    {
        [Required(ErrorMessage="El campo 'Nombre' es obligatorio")]
        public string Nombre { get; set; }

        [Required(ErrorMessage = "El campo 'Apellido' es obligatorio")]
        public string Apellido { get; set; }

        [Required(ErrorMessage = "El campo 'Teléfono' es obligatorio")]
        [DataType(DataType.PhoneNumber)]
        [RegularExpression(@"^\(\d{4,5}\) ?\d{8,9}|^\(\d{4,5}\) ?\d{6,7}",
                             ErrorMessage = "No es un número de teléfono válido. Ej: (#área) #(sin espacios)")]
        public string Telefono { get; set; }

        [Required(ErrorMessage = "El campo 'Ciudad' es obligatorio")]
        public string Ciudad { get; set; }

        [Required(ErrorMessage= "El campo 'Direccion' es obligatorio")]
        public string Direccion { get; set; }

        [Required(ErrorMessage = "El campo 'Email' es obligatorio")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression(@"^[a-z0-9](([_\.\-]?[a-z0-9]+)*)@([a-z0-9]+)(([\.\-]?[a-z0-9]+)*)\.([a-z]{2,})$",
        ErrorMessage = "Email no válido")]
        [Display(Name = "Correo electrónico")]
        public string Email { get; set; }

        [Key]
        [Required(ErrorMessage = "El campo 'Nombre de Usuario' es obligatorio")]
        [Display(Name = "Nombre Usuario")]
        public string NombreUsuario { get; set; }

        [Required(ErrorMessage= "La 'contraseña' es obligatoria para poder acceder a su cuenta")]
        [StringLength(12, ErrorMessage = "La contraseña debe tener entre 6 y 12 caracteres", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Contraseña")]
        public string Contraseña { get; set; }

        [Required(ErrorMessage = "Se requiere la confirmacion de la contraseña")]
        [DataType(DataType.Password)]
        [Display(Name = "Confirmar contraseña")]
        [Compare("Contraseña", ErrorMessage = "La contraseña y la confirmación no concuerdan")]
        public string ConfirmarContraseña { get; set; }

        public virtual ICollection<Evento> Eventos { get; set; }

        public virtual ICollection<Contacto> Contactos { get; set; }

    }
}